using System.Collections.Generic;

namespace NGIS.Model
{
	public struct LocalAttribute
	{
		public ELocalizationType localType;

		public string localName;

		public string abstractInfo;

		public string wikiUrl;

		public List<string> keywords;

		public List<ModelMechanismItem> mechanismItems;

		public ESpatiotemporalScaleType sptimeScaleType;

		public SpatiotemporalStepLength sslX;

		public SpatiotemporalStepLength sslY;

		public SpatiotemporalStepLength sslZ;

		public SpatiotemporalStepLength sslT;

		public SpatialScope spatialScope;

		public bool compareOther(LocalAttribute pLocal)
		{
			if (localType != pLocal.localType)
			{
				return false;
			}
			if (localName != pLocal.localName)
			{
				return false;
			}
			if (abstractInfo != pLocal.abstractInfo)
			{
				return false;
			}
			if (wikiUrl != pLocal.wikiUrl)
			{
				return false;
			}
			if (keywords.Count != pLocal.keywords.Count)
			{
				return false;
			}
			for (int i = 0; i < keywords.Count; i++)
			{
				if (keywords[i] != pLocal.keywords[i])
				{
					return false;
				}
			}
			if (mechanismItems.Count != pLocal.mechanismItems.Count)
			{
				return false;
			}
			foreach (ModelMechanismItem mechanismItem in mechanismItems)
			{
				if (!pLocal.mechanismItems.Contains(mechanismItem))
				{
					return false;
				}
			}
			if (sptimeScaleType != pLocal.sptimeScaleType)
			{
				return false;
			}
			if (sslX != pLocal.sslX)
			{
				return false;
			}
			if (sslY != pLocal.sslY)
			{
				return false;
			}
			if (sslZ != pLocal.sslZ)
			{
				return false;
			}
			if (sslT != pLocal.sslT)
			{
				return false;
			}
			if (spatialScope != pLocal.spatialScope)
			{
				return false;
			}
			return true;
		}

		public static bool operator ==(LocalAttribute laA, LocalAttribute laB)
		{
			return laA.compareOther(laB);
		}

		public static bool operator !=(LocalAttribute laA, LocalAttribute laB)
		{
			return !(laA == laB);
		}
	}
}
